from PyQt5.Qt import *

class MyQWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.setup_ui()

    def setup_ui(self):
        self.setWindowTitle("内存管理机制")

        """
        QObject继承树
        1.所有都直接或间接继承自QObject
        2.QObjects在一个对象树中组织自己
        3.当父对象呗销毁, 子对象也被销毁
        4.当一个控件没有任何父控件, 就会当成顶层控件, 多个顶层控件相互独立
        """
        obj1 = QObject()
        obj2 = QObject()
        obj2.setParent(obj1)
        # 监听obj2被销毁
        obj2.destroyed.connect(lambda : print("obj2被销毁了"))
        del obj1

# 测试
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = MyQWidget()
    window.show()
    sys.exit(app.exec_())